public class Student {
    // 学生属性
    private String studentId;   // 学生编号
    private String studentName; // 学生姓名
    private String gender;      // 性别
    private Course selectedCourse; // 所选课程（按要求：每名学生选修1门课程）

    // 构造方法：实例化学生时初始化基本信息
    public Student(String studentId, String studentName, String gender) {
        this.studentId = studentId;
        this.studentName = studentName;
        this.gender = gender;
    }

    // 核心方法1：学生选课（若已选课程，先退课再选新课）
    public void selectCourse(Course course) {
        if (this.selectedCourse != null) {
            dropCourse(); // 调用退课方法，解除原有课程关联
        }
        this.selectedCourse = course;
        System.out.println("学生【" + studentName + "】成功选修课程：" + course.getCourseName());
    }

    // 核心方法2：学生退课（清空已选课程）
    public void dropCourse() {
        if (this.selectedCourse != null) {
            System.out.println("学生【" + studentName + "】成功退课：" + selectedCourse.getCourseName());
            this.selectedCourse = null;
        } else {
            System.out.println("学生【" + studentName + "】当前未选任何课程，无需退课");
        }
    }

    // 核心方法3：打印学生课表（按要求显示完整信息）
    public void printSchedule() {
        System.out.println("\n========== 学生【" + studentName + "】课表 ==========");
        if (this.selectedCourse != null) {
            Course course = this.selectedCourse;
            System.out.println("课程编号：" + course.getCourseId());
            System.out.println("课程名称：" + course.getCourseName());
            System.out.println("上课地点：" + course.getLocation());
            System.out.println("上课时间：" + course.getTime());
            System.out.println("授课教师：" + course.getTeacher().getTeacherName());
        } else {
            System.out.println("当前未选修任何课程");
        }
        System.out.println("=========================================\n");
    }
}